package br.com.dbsti.construtortelas;

import javax.swing.JPanel;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;
import net.miginfocom.swing.MigLayout;

public abstract class EditorObjetos<Tipo> extends JPanel{
    
    protected Tipo valor;

    public EditorObjetos() {
        super();
        this.setLayout(new MigLayout());
        this.addAncestorListener(new AncestorListener() {

            public void ancestorAdded(AncestorEvent event) {
                 adicionarEditoresPropriedades();  
            }

            public void ancestorRemoved(AncestorEvent event) {
            
            }

            public void ancestorMoved(AncestorEvent event) {
               
            }
        });

        
        this.doLayout();
    }
    
    
    
    public void set (Tipo valor){
        this.valor = valor;
        preencheCamposTela();
    };
    
    public Tipo get(){
        lerCamposTela();
        return this.valor;
    };


    protected abstract void preencheCamposTela();


    protected abstract void lerCamposTela();

    protected abstract void adicionarEditoresPropriedades();
    
 

}
